/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package templatemethod;

/**
 *
 * @author carlosarboleda
 */

///Clase Abstracta
public abstract class JuegoDeTablero {



    //final: especificar que no se puede modificar esta clase en subcalses

    public final void jugar(int jugadores){

            //Funcionalidad del juego
        iniciarJuego();
        while(!acabo()){
          // Turnos
          for (int j = 0; j < jugadores; j++) {
                hacerJugada(j);

            }
        }
        finalDelJuego();
    }

    //Pasos del juego


    abstract void iniciarJuego();
    abstract void hacerJugada(int jugador);
    abstract void finalDelJuego();
    abstract boolean acabo();


}
